﻿namespace Bricks.Caching
{
    
    /// <summary>
    /// 
    /// </summary>
    public sealed class NullCacheFacade : ICacheFacade
    {

        /// <summary>
        /// 
        /// </summary>
        public NullCacheFacade() { }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public object this[string key] { get { return null; } }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public void Add(string key, object value) { }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool Contains(string key) { return false; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public object Get(string key) { return null; }

        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="TValue"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public TValue Get<TValue>(string key) { return (TValue)Get(key); }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        public void Remove(string key) { }

        /// <summary>
        /// 
        /// </summary>
        public void Flush() { }
    }
}
